package com.hbnu.system.model.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 论文暂存DTO
 * 用于接收前端暂存的论文数据
 */
@Data
public class PaperTSdto implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键 论文主键
     */
    @ApiModelProperty(value = "主键")
    private String PaperID;

    /**
     * 统计分类
     */
    @ApiModelProperty(value = "统计分类")
    private String classifi;

    /**
     * 所属机构
     */
    @ApiModelProperty(value = "所属机构")
    private String organization;

    /**
     * 署名单位
     */
    @ApiModelProperty(value = "署名单位")
    private String signedUnit;

    /**
     * 论文名称
     */
    @ApiModelProperty(value = "论文名称")
    private String paperName;

    /**
     * 刊物名称
     */
    @ApiModelProperty(value = "刊物名称")
    private String periodicalName;

    /**
     * 刊物分类
     */
    @ApiModelProperty(value = "刊物分类")
    private String periodicalCate;

    /**
     * 第一作者
     */
    @ApiModelProperty(value = "第一作者")
    private String leadAuthor;

    /**
     * 出版、发表、使用时间
     */
    @ApiModelProperty(value = "出版、发表、使用时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate publicationTime;

    /**
     * 收录情况
     */
    @ApiModelProperty(value = "收录情况")
    private String inclusionState;

    /**
     * 论文字数（千字）
     */
    @ApiModelProperty(value = "论文字数（千字）")
    private String wordsNum;

    /**
     * CN号
     */
    @ApiModelProperty(value = "CN号")
    private String CNnum;

    /**
     * ISSN或ISBN号
     */
    @ApiModelProperty(value = "ISSN或ISBN号")
    private String StandardNumber;

    /**
     * 影响因子
     */
    @ApiModelProperty(value = "影响因子")
    private String factors;

    /**
     * 论文分类
     */
    @ApiModelProperty(value = "论文分类")
    private String paperCate;

    /**
     * 年卷期页码
     */
    @ApiModelProperty(value = "年卷期页码")
    private String annualVolumePage;

    /**
     * 论文来源
     */
    @ApiModelProperty(value = "论文来源")
    private String paperOrigin;

    /**
     * 研究类别
     */
    @ApiModelProperty(value = "研究类别")
    private String researchCate;

    /**
     * 一级学科
     */
    @ApiModelProperty(value = "一级学科")
    private String firstDiscipline;

    /**
     * 二级学科
     */
    @ApiModelProperty(value = "二级学科")
    private String secondaryDiscipline;

    /**
     * 是否受学校经费资助
     */
    @ApiModelProperty(value = "是否受学校经费资助")
    private String schoolSup;

    /**
     * 成果引用采纳情况
     */
    @ApiModelProperty(value = "成果引用采纳情况")
    private String introductionAdoption;

    /**
     * 成果摘要
     */
    @ApiModelProperty(value = "成果摘要")
    private String resultsExcerpt;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String notes;

    /**
     * 录入人
     */
    @ApiModelProperty(value = "录入人")
    private String entered;

    /**
     * 录入日期
     */
    @ApiModelProperty(value = "录入日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime enteredDate;

    /**
     * 所有作者
     */
    @ApiModelProperty(value = "所有作者")
    private String allAuthor;

    /**
     * 关联项目
     */
    @ApiModelProperty(value = "关联项目")
    private String associatedProjects;

    /**
     * 审核结果
     */
    @ApiModelProperty(value = "审核结果")
    private String status;

    /**
     * 所属学院
     */
    @ApiModelProperty(value = "所属学院")
    private String dept;

    /**
     * 未通过原因
     */
    @ApiModelProperty(value = "未通过原因")
    private String reason;

    /**
     * 论文编号
     */
    @ApiModelProperty(value = "论文编号")
    private String paperNum;

    /**
     * 通讯作者
     */
    @ApiModelProperty(value = "通讯作者")
    private String correspondingAuthor;

    /**
     * 量化分
     */
    @ApiModelProperty(value = "量化分")
    private Float score;

    /**
     * 考核系数分
     */
    @ApiModelProperty(value = "考核系数分")
    private Float assessment;

    /**
     * 所有作者的姓名
     */
    @ApiModelProperty(value = "所有作者的姓名")
    private String allAuthorName;
}